import axios from "axios";
import constants from "@/common/constants";
import cacheUtil from "@/util/cacheUtil";
import router from "@/router"

const service = axios.create({
    baseURL: constants.HTTP_CONFIG.baseUrl,
    timeout: constants.HTTP_CONFIG.timeout
})

// 设置请求拦截
service.interceptors.request.use(config => {
    // 获取token
    const userInfo = cacheUtil.getLocalStorage('userInfo')
    if (userInfo && userInfo.token) {
        // 设置token权限
        config.headers.Authorization = userInfo.token
    }
    return config
})

// 设置响应拦截
service.interceptors.response.use(response=>{
	if(response.data.code == 2){
		router.replace('/login')
		return response.data
	}
    return response.data
},error=>{
    console.log("在响应拦截中出错了");
	if(error && error.response){
		switch (error.response){
			case 400:error.message = '错误请求';break;
			case 401:error.message = '未授权，请重新登录';break;
			case 403:error.message = '拒绝访问';break;
			case 404:error.message = '请求错误，未找到该资源';
				window.location.href='/NotFound';break;
			case 405:error.message = '请求方法为允许';break;
			case 408:error.message = '请求超时';break;
			case 500:error.message = '服务端出错';break;
			case 501:error.message = '网络未实现';break;
			case 502:error.message = '网络出错';break;
			case 503:error.message = '服务不可用';break;
			case 504:error.message = '网络超时';break;
			case 505:error.message = 'http版本不支持该请求';break;
			default:error.message=`连接错误${error.response.status}`
		}
	}
	if(error.message.includes('timeout')){
		error.message='请求超时，请稍后再试'
	}
	return Promise.reject(error.message)
})

export default service